CC	= gcc.exe
LINK	= ld.exe
ARCH	= ar.exe
INCDIR	= $(RSXDJ_UNX)/include
_LIBDIR = $(RSXDJ_UNX)/lib
LIBDIR	= $(_LIBDIR)/all
OBJS	= $(_LIBDIR)/crt0w32.o
LIBS_1	= -lmain -lalias -lgcc -lc -lc_app -lc -lgcc -lemx -lemx2
LIBS_2	= -lkrn32 -lusr32 -lgdi32
LIBS	= $(LIBS_1) $(LIBS_2)
DEF2	= -D___X86 -D___32bit -D___WIN -D___RSXDJ \
	  -D__WIN32__ -D__RSXNT__ -D__EMX__
CFLG2	= -c -funsigned-char -ffast-math -O2 -Wall -I. \
	  -I$(INCDIR) -I$(INCDIR)/win32
LFLG2	= -L$(LIBDIR) $(OBJS) -T$(_LIBDIR)/rsxnt.djl

BIN	= ../bin
DEST	= $(BIN)/$(VAR)

#==========================================================================

LIB_OBJS_1 = sys/win/_main.o \
	     sys/win/_std.o \
	     sys/win/_kbd.o \
	     sys/win/_disp.o \
	     sys/win/_graph.o \
	     sys/std.o
LIB_OBJS_2 = sys/memo.o \
	     sys/kbd.o \
	     sys/disp.o \
	     sys/graph.o \
	     sys/font.o \
	     sys/cons.o
LIB_OBJS_3 = sys/file.o \
	     sys/tim.o \
	     sys/mice.o \
	     sys/real.o \
	     sys/sig.o \
	     lib/str.o \
	     lib/num.o
LIB_OBJS   = $(LIB_OBJS_1) $(LIB_OBJS_2) $(LIB_OBJS_3)

DIO_OBJS_1 = main/dio.o \
	     eval/eval.o \
	     eval/cmd.o \
	     eval/arit.o \
	     eval/efpu.o \
	     vp/vp.o
DIO_OBJS_2 = vp/opfn.o \
	     vp/vfpu.o \
	     vp/sys.o \
	     vp/lib.o
DIO_OBJS   = $(DIO_OBJS_1) $(DIO_OBJS_2)

#==========================================================================

.c.o:
	$(CC) -o $@ $< @dio_c.cfg

#==========================================================================

all: $(DEST)/libdio.a $(DEST)/dio.exe $(DEST)/gmod.exe

#==========================================================================

dio_c0.cfg: $(BIN)/print.exe
	$(BIN)/print.exe $(CFLG2) >dio_c0.cfg
	$(BIN)/print.exe $(DEF2) $(DEF) >>dio_c0.cfg

dio_c.cfg: $(BIN)/print.exe
	$(BIN)/print.exe $(CFLG2) $(CFLG) >dio_c.cfg
	$(BIN)/print.exe $(DEF2) $(DEF) >>dio_c.cfg

dio_l.cfg: $(BIN)/print.exe
	$(BIN)/print.exe $(LFLG2) >dio_l.cfg
	$(BIN)/print.exe $(LFLG) >>dio_l.cfg

libs.lst: $(BIN)/print.exe
	$(BIN)/print.exe $(LIBS_1) >libs.lst
	$(BIN)/print.exe $(LIBS_2) >>libs.lst

dlibs.lst: $(BIN)/print.exe
	$(BIN)/print.exe $(DEST)/libdio.a >dlibs.lst
	$(BIN)/print.exe $(LIBS_1) >>dlibs.lst
	$(BIN)/print.exe $(LIBS_2) >>dlibs.lst

lib.lst: $(BIN)/print.exe
	$(BIN)/print.exe $(LIB_OBJS_1) >lib.lst
	$(BIN)/print.exe $(LIB_OBJS_2) >>lib.lst
	$(BIN)/print.exe $(LIB_OBJS_3) >>lib.lst

dio.lst: $(BIN)/print.exe
	$(BIN)/print.exe $(DIO_OBJS_1) >dio.lst
	$(BIN)/print.exe $(DIO_OBJS_2) >>dio.lst

#==========================================================================

sys/win/_main.o: dio_c0.cfg sys/win/_main.c
	$(CC) -o $@ sys/win/_main.c @dio_c0.cfg

$(DEST)/libdio.a: dio_c.cfg lib.lst $(LIB_OBJS)
	$(ARCH) -r $@ @lib.lst

$(DEST)/dio.out: sys\asc0816.h dio_c.cfg dio_l.cfg dio.lst dlibs.lst \
		 $(DIO_OBJS) $(DEST)/libdio.a
	$(LINK) -o $@ @dio_l.cfg @dio.lst @dlibs.lst

$(DEST)/gmod.out: sys\asc0816.h dio_c.cfg dio_l.cfg dlibs.lst \
		  test/gmod.o $(DEST)/libdio.a
	$(LINK) -o $@ @dio_l.cfg test/gmod.o @dlibs.lst

$(DEST)/tkey.out: sys\asc0816.h dio_c.cfg dio_l.cfg dlibs.lst \
		  test/tkey.o $(DEST)/libdio.a
	$(LINK) -o $@ @dio_l.cfg test/tkey.o @dlibs.lst

$(DEST)/gkey.out: sys\asc0816.h dio_c.cfg dio_l.cfg dlibs.lst \
		  test/gkey.o $(DEST)/libdio.a
	$(LINK) -o $@ @dio_l.cfg test/gkey.o @dlibs.lst

$(DEST)/mkey.out: sys\asc0816.h dio_c.cfg dio_l.cfg dlibs.lst \
		  test/mkey.o $(DEST)/libdio.a
	$(LINK) -o $@ @dio_l.cfg test/mkey.o @dlibs.lst

$(DEST)/mchr.out: sys\asc0816.h dio_c.cfg dio_l.cfg dlibs.lst \
		  test/mchr.o $(DEST)/libdio.a
	$(LINK) -o $@ @dio_l.cfg test/mchr.o @dlibs.lst

$(DEST)/vdb.out: sys\asc0816.h dio_c.cfg dio_l.cfg dlibs.lst \
		 test/vdb.o $(DEST)/libdio.a
	$(LINK) -o $@ @dio_l.cfg test/vdb.o @dlibs.lst

#==========================================================================

$(DEST)/dio.exe: $(DEST)/dio.out
	ntbind $< -o $@

$(DEST)/gmod.exe: $(DEST)/gmod.out
	ntbind $< -o $@

$(DEST)/tkey.exe: $(DEST)/tkey.out
	ntbind $< -o $@

$(DEST)/gkey.exe: $(DEST)/gkey.out
	ntbind $< -o $@

$(DEST)/mkey.exe: $(DEST)/mkey.out
	ntbind $< -o $@

$(DEST)/mchr.exe: $(DEST)/mchr.out
	ntbind $< -o $@

$(DEST)/vdb.exe: $(DEST)/vdb.out
	ntbind $< -o $@

#==========================================================================
